Distributed computing systems, sometimes also referred to as cloud computing systems, are used to provide services to electronic devices operated by end users. In a cloud computing system, the hardware and software computer resources configuration is hidden from the end user. Cloud computing systems may include servers, network storage devices, routers, gateways, communication links, and other physical hardware and software platforms. However, because services are deployed on physical hardware and software platforms which are hidden from end users, they can be managed, upgraded, replaced or otherwise changed by a system administrator without the end users being aware of or affected by the change.
In a cloud computing system, applications may be executed on virtual machines, which are isolated guest operating systems installed within a host system. Virtual machines are typically implemented with software emulation, hardware virtualization, or both. A single hardware and/or software platform may host a number of virtual machines, each of which may have access to some portion of the platform's resources, such as program code processing resources, storage resources, display resources, communication interfaces, etc.
In existing cloud and other distributed computing systems, the creator of the services or operator of the systems must know in advance which services (or types of services) should be deployed together, and provide associated instructions for controlling deployment of those services on computer resources within the cloud computing systems. However, cloud computing systems can offer a large number of different services, and new types of services and versions of services can be constantly created and made available for deployment. When consumers and enterprises find about new or other desirable services that are available in cloud computing systems, they can migrate quickly to requesting deployment of such services. However, these services may not be optimally deployed within cloud computing systems because, for example, the creator of the services or operator of the system may have insufficient knowledge of how to deploy these and other possibly related services on particular computer resources of the cloud computing system. Further complicating such deployment is that services may belong to different industrial domains, but used cross-domain, which makes it even more difficult for a creator or operator to predict which services will be used together. Consequently, consumers and enterprises may be provided sub-optimal or unsatisfactory services from cloud computing systems.